From 12bc6b6c1fbc938216a95f6cac983df2b2cd757a Mon Sep 17 00:00:00 2001
From: Icenowy Zheng <icenowy@aosc.io>
Date: Tue, 9 Jan 2018 23:58:12 +0800
Subject: [PATCH 32/35] net: stmmac: sun8i: force select external PHY when no
 internal one

The PHY selection bit also exists on SoCs without an internal PHY; if
it's set to 1 (internal PHY) then the MAC will not make use of any PHY.

This problem appears when adapting for H6, which has no real internal
PHY (the "internal PHY" on H6 is not on-die, but on a co-packaged AC200
chip, via RMII interface at GPIO bank A), but the PHY selection bit is
set.

Force the PHY selection bit to 0 when no external PHY to select this
problem.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
---
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
index a3fa65b..099daef 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
@@ -826,6 +826,11 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
 		 * address. No need to mask it again.
 		 */
 		reg |= 1 << H3_EPHY_ADDR_SHIFT;
+	} else {
+		/* For SoCs without internal PHY the PHY selection bit should be
+		 * set to 0 (external PHY).
+		 */
+		reg &= ~(H3_EPHY_SELECT);
 	}
 
 	if (!of_property_read_u32(node, "allwinner,tx-delay-ps", &val)) {
-- 
2.7.4

